A computer system may include attached devices that may require time to interact with a central processing unit (CPU) of the computer system, for example, to complete some processing task. In certain systems, the CPU has been able to interact with attached devices using polling, whereby each device is given a preset amount of time to interact with the CPU regardless of whether the attached device required interaction with the CPU and processing time. Other computing systems may include attached devices that utilize interrupt signals to cause an operating system of the computing system (e.g., executed by the CPU) to pause the current code and process an event from one of the attached devices that requires attention. The interrupt signal may be initiated by a function of the attached device, for example, when the attached device is required to complete an activity. The operating system may then initiate an interrupt handler, which may be included with a driver of the attached device. The interrupt handler may then attempt to deal with the device function requiring attention. For example, an interrupt may be generated when a key is pressed on a keyboard or when a mouse is moved, which are then processed by the CPU using an interrupt handler for a driver of the keyboard/mouse. However, not all interrupt signals are desirable, and a spurious interrupt signal may be generated by an unwanted hardware condition, such as a device or driver error or other faulty status.
In order to assert an interrupt signal, the attached devices of a computing system may utilize an Interrupt Request (IRQ) value for an interrupt line connected to the CPU through a Programmable Interrupt Controller (PIC). The PIC allows for multiple devices connected to the computer system to each interrupt the CPU using the PIC. The PIC further utilizes interrupt wires to each of the connected devices that include their own IRQ value. The IRQ value allows the CPU to identify the attached device that requested the interrupt. Peripheral Component Interconnect (PCI) devices connected to a computer system may share IRQ values so that multiple PCI device functions may utilize the IRQ value when generating an interrupt signal. Since each IRQ value allows for the CPU to identify the device or devices generating the interrupt signal, PCI devices sharing an IRQ value may utilize the interrupt handler of the PCI device to access the PCI device function and deassert the interrupt so that the IRQ value may be utilized by other PCI devices sharing the IRQ value. However, a spurious interrupt signal that is unexpected by the driver and cannot be deasserted by the interrupt handler may stay asserted forever if the cause of the spurious interrupt signal is not resolved. Thus, the spurious interrupt signal may lock the IRQ value from the other device functions sharing the IRQ value.